#ifndef __GE_SHADERPROGRAM_H__
#define __GE_SHADERPROGRAM_H__

#include "GE_Base.h"
namespace Syp
{
///A ShaderProgram holds executable code for the GPU. The executable code is compiled/linked from Shader Objects. A ShaderProgram can contain multiple Shaders to replace parts of the fixed functionality pipeline.
class ShaderProgram : public Resource
{
	friend class Renderer;
	friend class Pass;
public:
	///Constructor for ShaderProgram. Since it is a resource which is not loaded from file, a unique name is required.
	ShaderProgram(const String& file);
	~ShaderProgram();
	PInt id;
	void addShader(Shader* s);
	void linkShaders();
private:
	std::vector<Shader*> shaders;

};
}
#endif //__GE_SHADERPROGRAM_H__
